PR previews + main publish to GitHub Pages#17
Merged
Conversation
Publish the demonstrator's static surfaces (the SPEC-14 component gallery and the role-surface wireframes) to GitHub Pages. - scripts/build-site.ts + `npm run build:site`: assemble the generated gallery and wireframes under site/ with a small landing page. Output is git-ignored; CI builds and publishes it. Build metadata (commit, PR number) labels a preview honestly when present. - deploy-pages.yml: on push to main (and manual dispatch), publish site/ to the gh-pages branch root, preserving pr-preview/ via clean-exclude. - pr-preview.yml: on each PR, publish site/ to pr-preview/pr-<N>/ and link it from a PR comment; on merge/close, remove the preview and update the comment. Same-repo branches only (GITHUB_TOKEN write scope). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzHCttj1aXztNBBanQq4Vp
|
IanMayo
pushed a commit
that referenced
this pull request
Jul 12, 2026
Adds the demonstrator's public-facing welcome page and turns the comms plan's stage-gate progress cadence into a per-spec "plans -> achievements" discipline, recorded register-first as a flagged candidate. docs/assay-home.html — hand-authored Home/Overview (comms plan §4 page 1; projects concept §1). Self-contained and static (comms plan §6.4): inline CSS/SVG, no external assets, theme-aware (light/dark). Reuses the demonstrator's own band-pill / four-stop verdict colour language (ui-design §2, comms plan §8) so the site looks like the honesty it reports. Sections: objectives + premise, the spine diagram (Knowledge -> Compile -> Score -> Analyse -> Surfaces, status-coloured), links to the published surfaces (gallery/, wireframes.html), theses A-H with honest state chips, a progress/achievements tracker (Stage 0/1 done, Stage 2 in progress), a clearly-labelled forthcoming-articles section (no dead link), the banded-honesty stance, and the canonical-doc index. Honesty guardrails hold: nothing shown as done the repository does not contain; the fictional Meridian framing is stated on every relevant block. Deployment note: the publish pipeline (PR #17, scripts/build-site.ts) copies this file to the site root as index.html; its relative app links resolve once deployed. Left unwired here to avoid conflicting with that in-flight work. Process change (register-first, ASSAY-DEC-2): - concept §6.12 — flagged candidate: each build spec carries a home-page- currency step in its definition of "done" when it moves a thesis/stage from planned to demonstrated. Not yet ratified. - comms plan §9 + .specify/templates/tasks-template.md — the step wired in provisionally, marked pending ratification (the DEC-16 / sparse-channel "build against the flagged candidate" pattern). npm test: 89 passing; typecheck clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011vg1J8cqoCaAdUD1qMMnWS
IanMayo
pushed a commit
that referenced
this pull request
Jul 12, 2026
PR #17's publish pipeline is on main, so the deferred wiring is unblocked. build-site.ts now copies the hand-authored Home page (docs/assay-home.html) to site/index.html instead of generating a minimal inline landing, so the demonstrator's front door is the reviewed, on-brand page rather than a stub. Honest preview labelling is preserved: a <!--BUILD_BADGE--> placeholder in the Home page is replaced with a "preview of PR #N · <sha>" badge only when PR_NUMBER is set. Production (main) and local builds ship badge-free — a preview must announce itself; the real site needs no label. Verified: npm run build:site writes the Home page as root (gallery/ and wireframes.html alongside); preview build injects the badge + commit link; production build is clean. typecheck clean; committed gallery output byte-identical (regeneration is a no-op). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011vg1J8cqoCaAdUD1qMMnWS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Publish the demonstrator's static surfaces to GitHub Pages, with a preview per PR and a live site from
main.ASSAY has no compiled SPA — the shippable "app" is static HTML: the SPEC-14 fixture-backed component gallery (
npm run gallery) and the role-surface wireframes. This change assembles those into one site and wires two publish paths.Changes
scripts/build-site.ts+npm run build:site— regenerates the gallery, then gathersgallery/,wireframes.html, and a small on-brand landing page intosite/. Output is git-ignored (CI builds it, nothing is committed). Build metadata (commit SHA, PR number) labels a preview honestly when the environment provides it, and invents nothing when it doesn't..github/workflows/deploy-pages.yml— on push tomain(andworkflow_dispatch), publishessite/to thegh-pagesbranch root viaJamesIves/github-pages-deploy-action, withclean-exclude: pr-preview/so a main deploy never wipes open PR previews..github/workflows/pr-preview.yml— on each PR (opened/reopened/synchronize/closed), usesrossjrw/pr-preview-actionto publishsite/underpr-preview/pr-<N>/and link it from a PR comment; on merge/close it removes the preview subtree and updates the comment. The build steps are skipped on close (teardown only)..gitignore/package.json— ignoresite/, add thebuild:sitescript.Both workflows write to the shared
gh-pagesbranch and coexist (main at the root, previews underpr-preview/).Verification
npm run build:siteproducessite/{index.html, gallery/index.html, wireframes.html}; preview labelling verified with mockPR_NUMBER/GITHUB_SHA.npm run typecheckclean (the new script is undertsconfig);npm test— 89 passing; the committed gallery output is byte-identical (regeneration is a no-op).One-time setup required
GitHub Pages must be set to Deploy from a branch →
gh-pages/(root)in repo Settings → Pages for either workflow's output to be served. Thegh-pagesbranch currently holds a stale source snapshot from PR #2; the firstmaindeploy replaces it with the assembled site.Note: previews use
GITHUB_TOKEN, which has write scope only for same-repo branches, so PRs opened from forks won't get a preview (they'd need read-only handling viapull_request_target, which runs untrusted PR code in the base context and is deliberately avoided here).🤖 Generated with Claude Code
Generated by Claude Code